// 导入axios
import axios from 'axios'
// 导入vant轻提示
import { Toast } from 'vant';
// 导入router
import router from '../router/index'
// let axiosurl = ""
// // 如果为开发模式的话执行url
// if(process.env.NODE_ENV === 'development' ){
//   axiosurl=process.env.VUE_APP_API
// }
// else{
//   // 否则设置成其他的模式（这里今后有很多个判断）
//   axiosurl=process.env.VUE_APP_API
// }

// 创建axios 赋值给常量service 
var service = axios.create({
    baseURL:'/api', //基准路径
    //baseURL:'http://waimai.yantianfeng.com/api', //基准路径

    // baseURL: process.env.VUE_APP_BASE_API,
    //在开发环境下, process.env.VUE_APP_BASE_API 获取的是 .env.development 文件中的 VUE_APP_BASE_API 的值, 可以正常使用代理解决跨域问题(代理配置是生效的).
    //在生产环境下, process.env.VUE_APP_BASE_API 获取的是 .env.production 文件中的 VUE_APP_BASE_API 的值, 这时的代理配置是无效( 请求如果存在跨域, 必须由服务器解决 ).
    timeout: 10000
})

// 添加请求拦截器
service.interceptors.request.use(
    (config)=>{ // 发出请求前，做些什么

        //统一设置请求头
        config.headers['Authorization'] = 'Bearer' + ' ' + localStorage.getItem('token');

        // 发出请求的loading提示
        Toast.loading({
            message: '加载中...',
            duration:0,  // 值为0 toast不会自动关闭
          });

        return config;
    },(error)=>{  // 发送请求错误，做些什么
        return Promise.reject(error)
    }
)

//设置响应拦截器
service.interceptors.response.use((res)=>{
    Toast.clear(); //隐藏loading
    return res;
},(error)=>{
    Toast.clear(); //隐藏loading
   // 得到响应错误的状态码
   console.log("error", error.response.status)
   switch (error.response.status) {
       case 302: Toast.fail('接口重定向了！'); break;
       case 400: Toast.fail('参数不正确！'); break;
       case 401: Toast.fail('您未登录，或者登录已经超时，请先登录！'),router.push('/login'); break;
       case 403: Toast.fail('您没有权限操作！'); break;
       case 404: Toast.fail('请求地址出错'); break; // 在正确域名下
       case 408: Toast.fail('请求超时！'); break;
       case 409: Toast.fail('系统已存在相同数据！'); break;
       case 500: Toast.fail('服务器内部错误！'); break;
       case 501: Toast.fail('服务未实现！'); break;
       case 502: Toast.fail('网关错误！'); break;
       case 503: Toast.fail('服务不可用！'); break;
       case 504: Toast.fail('服务暂时无法访问，请稍后再试！'); break;
       case 505: Toast.fail('HTTP版本不受支持！'); break;
       default: Toast.fail('异常问题，请联系管理员！'); break
   }
   // 对响应错误做点什么
   return Promise.reject(error);
});

//  默认导出封装的service
export default service
